Groovy তে closures, currying, এবং composition ফাংশনাল প্রোগ্রামিংয়ের গুরুত্বপূর্ণ বৈশিষ্ট্য। এই কনসেপ্টগুলো Groovy তে খুবই শক্তিশালী এবং আপনাকে আরও নমনীয় ও পুনঃব্যবহারযোগ্য কোড লিখতে সাহায্য করে। চলুন একে একে এগুলোর বিস্তারিত আলোচনা করি।
Closures হল Groovy এর একটি ফিচার যা একটি ফাংশন বা কোড ব্লককে প্রথম-class অবজেক্ট হিসেবে扱 ব্যবহারের সুযোগ দেয়। ক্লোজার একটি ফাংশন হতে পারে যা অন্য একটি ফাংশনে পাস করা যেতে পারে, বা একটি ভেরিয়েবলে সংরক্ষিত হতে পারে। এটি Java এর লাম্বডা এক্সপ্রেশনের মতো, তবে Groovy তে আরও সহজ এবং শক্তিশালী।
// Closure ডিক্লেয়ার করা
def greet = { name -> println "Hello, $name!" }
greet("John") // Output: Hello, John!
এখানে greet
একটি ক্লোজার যা name
প্যারামিটার নেবে এবং "Hello,
Groovy তে যদি শুধুমাত্র একটিমাত্র প্যারামিটার থাকে, তাহলে আপনি it
ব্যবহার করতে পারেন।
def double = { it * 2 }
println double(5) // Output: 10
এখানে it
এর মাধ্যমে একক প্যারামিটারটি (৫) গ্রহণ করা হচ্ছে এবং তাকে ২ দিয়ে গুণ করা হচ্ছে।
Currying একটি ফাংশনাল প্রোগ্রামিং কনসেপ্ট, যেখানে একটি ফাংশনকে একাধিক আর্গুমেন্টের পরিবর্তে একেকটি আর্গুমেন্ট গ্রহণ করে একাধিক ফাংশনে ভেঙে দেওয়া হয়। Groovy তে আপনি একটি ফাংশনকে কপি বা “কারি” করে একে একে আর্গুমেন্ট পাস করতে পারেন। এটি কোডের পুনঃব্যবহারযোগ্যতা এবং পাঠযোগ্যতা উন্নত করে।
def add = { x, y -> x + y }
def curriedAdd = add.curry(5) // 5 দিয়ে কারি করা হলো
println curriedAdd(3) // Output: 8 (৫ এবং ৩ যোগফল)
এখানে, add
ফাংশনটি দুইটি প্যারামিটার নেয়, তবে curry
মেথড ব্যবহার করে আমরা 5
প্যারামিটারটি আগেই প্রদান করেছি, এবং পরে কেবল 3
প্যারামিটার পাস করে ফলাফল পেয়েছি।
def multiply = { x, y, z -> x * y * z }
def curriedMultiply = multiply.curry(2, 3)
println curriedMultiply(4) // Output: 24 (২ * ৩ * ৪)
এখানে, প্রথমে x
এবং y
এর জন্য আর্গুমেন্ট দেওয়া হলো এবং পরে z
এর জন্য আর্গুমেন্ট দেওয়া হল। ফলস্বরূপ, আপনি এক এক করে আর্গুমেন্ট পাস করতে পারেন।
Composition হল ছোট ছোট ফাংশন বা ক্লোজারের সমষ্টি তৈরি করে একটি বড় কার্যকারিতা অর্জন করা। Groovy তে ক্লোজারের সাহায্যে ফাংশন কম্পোজিশন খুব সহজে করা যায়। এখানে আপনি একাধিক ক্লোজার বা ফাংশনকে একত্রে ব্যবহার করতে পারেন যাতে তারা একে অপরের আউটপুটকে ইনপুট হিসেবে গ্রহণ করে।
def addOne = { x -> x + 1 }
def multiplyByTwo = { x -> x * 2 }
def composedFunction = addOne >> multiplyByTwo
println composedFunction(3) // Output: 8 (৩ + ১ = ৪, ৪ * ২ = ৮)
এখানে, addOne
এবং multiplyByTwo
দুইটি ক্লোজার তৈরি করা হয়েছে, এবং >>
অপারেটর দিয়ে তাদের কম্পোজ করা হয়েছে। প্রথমে addOne
এক্সিকিউট হবে এবং তার আউটপুট multiplyByTwo
ক্লোজারের ইনপুট হিসেবে যাবে।
def square = { x -> x * x }
def subtractTwo = { x -> x - 2 }
def composedFunction = square >> subtractTwo
println composedFunction(5) // Output: 23 (৫^২ = ২৫, ২৫ - ২ = ২৩)
এখানে, প্রথমে square
ক্লোজার এক্সিকিউট হবে এবং তার আউটপুট দ্বিতীয় ক্লোজার subtractTwo
তে পাঠানো হবে। এর ফলে আমরা একটি নতুন কম্পোজড ফাংশন তৈরি করতে সক্ষম হয়েছি।
Groovy তে closures, currying, এবং composition এর মাধ্যমে আপনি ফাংশনাল প্রোগ্রামিংয়ের শক্তিশালী বৈশিষ্ট্য ব্যবহার করতে পারবেন। Closures আপনাকে ফাংশন বা কোড ব্লক তৈরি করে কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়, Currying আপনাকে আর্গুমেন্টগুলো ধাপে ধাপে পাস করতে সাহায্য করে, এবং Composition আপনাকে ছোট ছোট ফাংশনকে একত্রে কম্পোজ করে জটিল কার্যকরিতা তৈরি করতে সক্ষম করে। Groovy তে এই কনসেপ্টগুলো ব্যবহার করলে কোড আরও নমনীয়, পুনঃব্যবহারযোগ্য এবং সহজ হবে।
common.read_more